package cn.lil.dao;

import cn.lil.model.Bearing;
import cn.lil.utils.DataSourceUtils;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class BearingDao {
    public List<Bearing> getAllBearing() throws SQLException {
        String sql = "SELECT * FROM bearing";
        QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());
        return r.query(sql, new BeanListHandler<>(Bearing.class));
    }

    public Bearing selectBearingById(int id) throws SQLException {
        QueryRunner queryRunner = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "SELECT * FROM bearing WHERE id = ?";
        List<Bearing> bearings = queryRunner.query(sql, new BeanListHandler<>(Bearing.class), id);
        if (bearings.isEmpty()) {
            return null;
        }
        return bearings.get(0);
    }

    public void deleteUser(int bearingId) throws SQLException {
        QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "DELETE FROM bearing WHERE id = ?";

        // 使用update方法执行删除操作
        // 注意：这里不需要返回结果集，所以我们不需要BeanHandler或其他结果集处理器
        int rowsAffected = r.update(sql, bearingId);

        // 通常，我们可以检查受影响的行数来确认操作是否成功
        // 如果rowsAffected > 0，则表示至少删除了一条记录
        if (rowsAffected > 0) {
            // 操作成功，可以在这里添加日志或其他逻辑
            System.out.println("用户删除成功！");
        } else {
            // 如果没有行受到影响，则可能表示没有找到要删除的用户
            // 操作失败，可以在这里处理错误或添加日志
            System.out.println("用户删除失败，未找到ID为 " + bearingId + " 的用户！");
        }
    }

    public void addBearing(Bearing bearing) throws SQLException {
        QueryRunner r = new QueryRunner(DataSourceUtils.getDataSource());
        String sql = "INSERT INTO bearing (type, model, data, life, imgSrc,content) VALUES (?, ?, ?, ?, ?, ?)";
        int rowsAffected = r.update(sql, bearing.getType(), bearing.getModel(), bearing.getData(), bearing.getLife(), bearing.getImgSrc(), bearing.getContent());
        // 使用JdbcTemplate的update方法执行插入操作
        if (rowsAffected > 0) {
            // 操作成功，可以在这里添加日志或其他逻辑
            System.out.println("添加成功！");
        } else {
            // 操作失败，可以在这里处理错误或添加日志
            System.out.println("添加失败！");
        }
    }
}
